﻿//13. 喝多少瓶汽⽔
//13.1 题⽬描述：
//⽔已知1瓶汽⽔1元，2个空瓶可以换⼀瓶汽⽔，输⼊整数n（n >= 0），表⽰n元钱，计算可以多少汽
//⽔，请编程实现。
//13.2 解法思路：
//每次尽可能地⽤空瓶⼦去换取汽⽔，直到剩余的空瓶⼦不⾜以再换⼀瓶汽⽔为⽌。
//比特就业课主页：https ://m.cctalk.com/inst/s9yewhfr 比特就业课-专注IT大学生就业的精品课程 比特就业课
//具体的实现⽅法如下：
//1. ⾸先将 n 元钱全部⽤来购买汽⽔，计算出汽⽔的数量 total。
//2. 每次将剩余的空瓶⼦ empty 除以 2，表⽰可以换取的汽⽔数量，将这些汽⽔数量加到 total 中。
//3. 将剩余的空瓶⼦ empty 除以 2 向上取整，表⽰剩余的空瓶⼦买了汽⽔后喝完剩下的空瓶⼦数量。
//4. 重复步骤 2 和 3，直到剩余的空瓶⼦数量不⾜以再换取⼀瓶汽⽔为⽌。
//• 特别地，我们可以理解为：两个空瓶⼦可以换到⼀瓶汽⽔和⼀个空瓶⼦，相当于⼀个空瓶⼦可以
//喝到⼀瓶汽⽔，⽽最后⼀定会剩余⼀个空瓶⼦⽆法继续购买汽⽔。则如果我们有钱买汽⽔，则可
//以喝到 2 * n - 1 瓶汽⽔，否则喝到 0 瓶汽⽔。
//13.3 解法代码：
////⽅法1：
//#include <stdio.h>
//int main()
//{
//	int n = 0;
//	int total = 0;//表⽰总共能喝多少汽⽔
//	int empty = 0;//表⽰⼿⾥的空瓶数
//	scanf("%d", &n);
//	//买n瓶汽⽔，并且喝完后剩余n个空瓶
//	total += n;
//	empty += n;
//
//	//重复⽤空瓶⼦购买汽⽔直⾄空瓶不够2个
//	while (empty >= 2)
//	{
//		total += empty / 2;
//		empty = empty / 2 + empty % 2;
//	}
//	printf("%d\n", total);
//	return 0;
//}
////⽅法2
//#include <stdio.h>
//int main()
//{
//	int n = 0;
//	int total = 0;//表⽰总共能喝多少汽⽔
//	int empty = 0;//表⽰⼿⾥的空瓶数
//	scanf("%d", &n);
//
//	//如果我们没钱买汽⽔，则可以喝到0瓶汽⽔，否则喝到2*n-1瓶汽⽔
//	1
//		2
//		3
//		4
//		5
//		6
//		7
//		8
//		9
//		10
//		11
//		12
//		13
//		14
//		15
//		16
//		17
//		18
//		19
//		20
//		21
//		22
//		23
//		24
//		25
//		26
//		27
//		28
//		29
//		30
//		31
//		32
//		比特就业课主页：https://m.cctalk.com/inst/s9yewhfr 比特就业课-专注IT大学生就业的精品课程 比特就业课
//	if (n == 0)
//		total = 0;
//	else
//		total = 2 * n - 1;
//	printf("%d\n", total);
//	return 0;
//}